1. Technical Field
The invention relates generally to methods for initializing an operating system on multiprocessor system, and more particularly to a method for fast booting an operating system on communications processors coupled in a multi-dimensional array architecture.
2. Description of Prior Art
A computer operating system is an integrated set of specialized programs that is used to control the execution of application programs running on the computer. Typically, an operating system manages the interaction of the computer hardware and software by providing services to the software applications such as resource allocation, scheduling of tasks, data management and input and output (I/O) control. When a computer is turned on, the operating system is loaded into main computer memory by a set of instructions normally contained within ROM. This process is called booting or initial program loading. A single-processor computer usually undergoes a booting routine that is controlled by a computer program that performs various tasks such as loading an operating system into the memory, checking memory for defects, and loading software drivers needed for equipment associated with the computer.
A multiprocessor computer, by definition, contains multiple processors that can execute multiple parts of a computer program or multiple programs simultaneously. In general, this parallel computing executes computer programs faster than conventional single processor computers that execute the parts of a program sequentially. When a multiprocessor computer system is first powered on or otherwise rest, the processors in the system are initialized by setting them to a known state. The reset causes a processor to jump to the system basic input/output systems (BIOS) to begin code execution. The BIOS brings the system through an initialization or booting procedure whereby diagnostic routines are run on the system hardware, such as memory and the processors. After the initialization or booting procedure is complete, an operation system is loaded onto the computer system.
In a typical multiprocessor system, operating system allocates high-speed communication to one processor and uses the other processor for more computationally intensive tasks, such as image processing algorithms. Operating system often provides real-time event-driven software tools to aid in the control of such computing systems. Operating system may further provide real-time event-driven software tools supporting message passing to organize communication between concurrent tasks or objects, which may reside in different processors.
As multiprocessor systems increase in complexity, the booting scheme correspondingly becomes more sophisticated. This is especially true for advanced multinode multiprocessor systems. Various booting methods have been developed. However, these methods are limited by the systems architecture. In other words, a booting scheme for one system architecture generally cannot be used in other system architecture.
U.S. Pat. No. 5,867,702 discloses a method for initializing a multiprocessor system. The method includes providing a first portion of boot code to multiple processors for execution, selecting a first processor, the selection based on which of the multiple processors first successfully executes the first portion of the boot code, providing a second portion of the boot code only to the first processor, and the first processor executing the second portion of the boot code to configure the multiprocessor system.
U.S. Pat. No. 5,938,765 discloses another method for initializing a shared-memory, multinode multiprocessor computer system. The nodes in the multiprocessor computer system separately and independently run standard PC-based BIOS routines in parallel for initialization of the nodes. These BIOS routines set addresses of hardware components on each node as though the nodes are in a single-node environment. After completion of BIOS, the addresses of the hardware components are reprogrammed to conform to the multinode environment. A master processor then takes control to boot the operating system on the multimode environment.
U.S. Pat. No. 6,012,142 discloses another method for booting a multiprocessor system. The method includes transferring a message from external source through a first processor and from the first processor to a second processor, checking the message passed to the second processor without error, interpreting the message by a selected one of the first and second processors, and then performing boot operations by the selected processor in response to the interpretation of the message.
U.S. Pat. No. 6,058,475 discloses another method of booting a computer containing more than two processors. If a normal boot attempt fails, different processors are selected, one-at-a-time, for performing the boot routine. During the boot routine, all other processors are held inactive. After boot, processors are tested for health. Non-healthy processors are held inactive, and healthy processors are activated as usual.
These methods cannot be used or cannot be effectively used in initializing concurrent high-speed communication networks acting with multi-dimensional arrays of communications processors and nodes of such networks. What is desired is to develop an efficient and effective scheme for booting such networks.